package exploits

import (
	"context"

	"github.com/liamg/traitor/pkg/payloads"

	"github.com/liamg/traitor/pkg/logger"

	"github.com/liamg/traitor/pkg/state"
)

type Vulnerability interface {
	IsVulnerable(ctx context.Context, s *state.State, l logger.Logger) bool
}

type Exploit interface {
	Exploit(ctx context.Context, s *state.State, l logger.Logger, payload payloads.Payload) error
}

type ShellDropper interface {
	Shell(ctx context.Context, s *state.State, l logger.Logger) error
}

type Disclosure interface {
	Disclose(ctx context.Context, s *state.State, l logger.Logger) error
}
